有了鯨魚工具箱~再來設立個實驗室吧!
圖片來源:Docker (@Docker) / Twitter
經過了20多天終於弄好基礎了... 接著往開發前進~
GitLab 是一個軟體開發平台,可以使用 Git 做版本控制,另外 GitLab 也有提供 CI/CD 的功能,現在目標直接朝向 DevOps 功能的開發
官網是直接寫 GitLab 是一個 DevOps 平台
GitLab 的核心是開源的,延伸出來分為社群版(CE)和企業版(EE),直接使用企業版就好,可以使用最低的免付費層級,後續有需要再訂閱付費就好
安裝方式就... 使用 helm 直接整套塞進 Kubernetes~
kubectl create ns gitlab
直接拿前面的 openssl 自簽憑證來用~
kubectl create secret -n gitlab generic gitlab-tls \
--from-file=ca.pem \
--from-file=tls.crt=example.domain.com.pem \
--from-file=tls.key=example.domain.com.key
helm repo add gitlab https://charts.gitlab.io/
helm show values gitlab/gitlab --version 6.4.2 >> values.yaml
這設定檔有 1200 行好可怕...
建議如果有要修改的時候要從 gitlab document 看... 因為底下還有一堆 subcharts...
完整檔案放在 github Day 22 - gitlab/values.yaml
global:
hosts:
domain: example.domain.com
...
ingress:
configureCertmanager: false
enabled: false
...
certmanager:
install: false
...
nginx-ingress:
enabled: false
prometheus:
server:
persistentVolume:
storageClass: nfs-client
size: 8Gi
...
redis:
master:
persistence:
storageClass: nfs-client
size: 5Gi
...
postgresql:
image:
tag: 14.5.0 # 可自選 postgresql 版本
persistence:
storageClass: nfs-client
size: 8Gi
...
gitlab:
gitaly:
persistence:
storageClass: nfs-client
size: 50Gi
...
設定完 values.yaml 後安裝
helm install gitlab -f values.yaml --namespace gitlab gitlab/gitlab --version 6.4.2
因為要自己加 labels 所以沒辦法用預設,這裡要再補回 ingress
檔案放在 github Day 22 - gitlab/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
labels:
environment: production
method: traefik
name: gitlab-kas
namespace: gitlab
spec:
rules:
- host: kas.example.domain.com
http:
paths:
- backend:
service:
name: gitlab-kas
port:
number: 8150
path: /
pathType: Prefix
- backend:
service:
name: gitlab-kas
port:
number: 8154
path: /k8s-proxy/
pathType: Prefix
tls:
- hosts:
- kas.example.domain.com
secretName: gitlab-tls
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
labels:
environment: production
method: traefik
name: gitlab-minio
namespace: gitlab
spec:
rules:
- host: minio.example.domain.com
http:
paths:
- backend:
service:
name: gitlab-minio-svc
port:
number: 9000
path: /
pathType: Prefix
tls:
- hosts:
- minio.example.domain.com
secretName: gitlab-tls
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
labels:
environment: production
method: traefik
name: gitlab-registry
namespace: gitlab
spec:
rules:
- host: registry.example.domain.com
http:
paths:
- backend:
service:
name: gitlab-registry
port:
number: 5000
path: /
pathType: Prefix
tls:
- hosts:
- registry.example.domain.com
secretName: gitlab-tls
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
labels:
environment: production
method: traefik
name: gitlab-webservice-default
namespace: gitlab
spec:
rules:
- host: gitlab.example.domain.com
http:
paths:
- backend:
service:
name: gitlab-webservice-default
port:
number: 8181
path: /
pathType: Prefix
tls:
- hosts:
- gitlab.example.domain.com
secretName: gitlab-tls
kubectl apply -f ingress.yaml
根據自己設定的 hosts 和 ingress 設定的 gitlab-webservice host 登入網頁,以上面範例為 https://gitlab.example.domain.com
然後就被擋在門外了...
gitlab 安裝時會自動產生 root 的 password
要自己從 secret 抓出來...
kubectl get secret -n gitlab gitlab-gitlab-initial-root-password -o jsonpath={.data.password} | base64 --decode
拿到密碼後就能使用 root 登入
成功登入~
gitlab 安裝文檔真的有夠多,我還沒完全看完...
之後如果有改設定會再補充... Grafana 的部分沒多久後就要改了...